// 封装分类数据业务相关代码
import { getTopCategoryAPI } from '@/apis/category.js'
import { onMounted, ref } from 'vue'
import { useRoute, onBeforeRouteUpdate } from 'vue-router'
export function useCategory(){
  // ref({})初始化根据后端返回的值类型进行，后端返回的是Object类型
  const categoryData = ref({})

  // 组件内获取路由参数
  const route = useRoute()

  // id默认参数是 id = route.params.id，在 onBeforeRouteUpdate 调用的时候传递参数，就是用传递的参数，否则使用默认参数
  const getCategory = async (id = route.params.id) => {
    const res = await getTopCategoryAPI(id)
    categoryData.value = res.result
  }

  onMounted(()=>{
    getCategory()
  })

    
  // 2. 解决路由缓存问题。目标：路由参数变数的时候，可以把分类数据接口重新发送
  onBeforeRouteUpdate((to) => {
    // 存在问题：使用最新的路由参数请求最新分类数据
    // console.log(to)
    getCategory(to.params.id)
  })


  return {
    categoryData
  }
}